package com.demo.woziqi;

import com.demo.woziqi.util.GameConstant;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Alert;
import javafx.scene.control.Button;
import javafx.scene.control.ButtonType;
import javafx.scene.control.Label;
import javafx.scene.layout.Pane;
import javafx.scene.paint.Color;
import javafx.scene.text.Font;
import javafx.stage.Stage;

import java.util.Optional;

/**
 * @Author 宋明松
 * @Version V1.0.0
 * @Date 2022-05-23
 * <p>
 * 游戏入口类
 */
public class GoApplicationStage extends Application {

    private Button btnMachine;// 人机对战按钮
    private Button btnOnline;// 联机模式按钮
    private Button btnPersonal; // 个人对战
    private Label title; // title 五子棋
    public static Stage stage;  // 当前窗体

    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) {
        primaryStage.setTitle("五子棋");
        /*
         * 初始化窗体
         * */
        Pane pane = new Pane();
        primaryStage.setHeight(510);
        primaryStage.setWidth(680);
        primaryStage.setResizable(false); // 固定大小

        this.btnMachine = new Button("人机对战");
        this.btnOnline = new Button("联机模式");
        this.btnPersonal = new Button("个人对战");
        this.title = new Label("五子棋");
        /*
         * 按钮以及title定位，以及颜色的设定
         * */
        btnMachine.setLayoutX(340);
        btnMachine.setLayoutY(390);
        btnOnline.setLayoutX(440);
        btnOnline.setLayoutY(390);
        btnPersonal.setLayoutX(540);
        btnPersonal.setLayoutY(390);
        title.setLayoutX(300);
        title.setLayoutY(80);
        title.setTextFill(Color.BROWN);
        title.setFont(new Font("KaiTi", 60));
        /*
         * 将节点添加到面板
         * */
//        pane.getChildren().add(btnMachine);
        pane.getChildren().add(btnOnline);
        pane.getChildren().add(btnPersonal);
        pane.getChildren().add(title);

        Scene scene = new Scene(pane); // 场景，存放面板
        scene.getStylesheets().add(String.valueOf(getClass().getClassLoader().getResource("go.css"))); //引入css
        primaryStage.setScene(scene); // 将场景设置到主舞台
        primaryStage.show(); // 展示舞台
        stage = primaryStage; // 将窗体赋值给全局变量

        primaryStage.setOnCloseRequest(e -> { // 关闭窗口事件监听
            Alert alert = new Alert(Alert.AlertType.CONFIRMATION);
            alert.setHeaderText("您确定退出吗？");
            //显示提示框
            Optional<ButtonType> result = alert.showAndWait();
            if (result.get() == ButtonType.OK) { // 点击确定执行
                System.exit(0); // 结束进程
            } else {
                e.consume();
            }
        });

        btnPersonal.setOnMouseClicked(e -> { // 个人对战按钮鼠标点击事件
            GameConstant.pattern = 0; // 模式改为对应的模式
            GameFightStage gameFightStage = new GameFightStage();
            gameFightStage.show(); // 显示棋盘窗体
            primaryStage.close(); // 关闭当前窗体
        });
        btnMachine.setOnMouseClicked(e -> {// 人机模式按钮鼠标点击事件
            GameConstant.pattern = 1; // 模式改为对应的模式
            GameFightStage gameFightStage = new GameFightStage();
            gameFightStage.show();// 显示棋盘窗体
            primaryStage.close();// 关闭当前窗体
        });
        btnOnline.setOnMouseClicked(e -> { // 联机模式鼠标点击事件
            GameConstant.pattern = 2; // 模式改为对应的模式
            GameLoginUserStage gameLoginUserStage = new GameLoginUserStage();
            gameLoginUserStage.show();// 显示棋盘窗体
            primaryStage.close();// 关闭当前窗体
        });
    }
}
